home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / bits / huge_vall.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  2KB  |  44 lines

  1. /* `HUGE_VALL' constant for ix86 (where it is infinity).
  2.    Used by <stdlib.h> and <math.h> functions for overflow.
  3.    Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004
  4.    Free Software Foundation, Inc.
  5.    This file is part of the GNU C Library.
  6.  
  7.    The GNU C Library is free software; you can redistribute it and/or
  8.    modify it under the terms of the GNU Lesser General Public
  9.    License as published by the Free Software Foundation; either
  10.    version 2.1 of the License, or (at your option) any later version.
  11.  
  12.    The GNU C Library is distributed in the hope that it will be useful,
  13.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.    Lesser General Public License for more details.
  16.  
  17.    You should have received a copy of the GNU Lesser General Public
  18.    License along with the GNU C Library; if not, write to the Free
  19.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  20.    02111-1307 USA.  */
  21.  
  22. #ifndef _MATH_H
  23. # error "Never use <bits/huge_vall.h> directly; include <math.h> instead."
  24. #endif
  25.  
  26. #if __GNUC_PREREQ(3,3)
  27. # define HUGE_VALL    (__builtin_huge_vall())
  28. #elif __GNUC_PREREQ(2,96)
  29. # define HUGE_VALL    (__extension__ 0x1.0p32767L)
  30. #else
  31.  
  32. # define __HUGE_VALL_bytes    { 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0x7f, 0, 0 }
  33.  
  34. # define __huge_vall_t    union { unsigned char __c[12]; long double __ld; }
  35. # ifdef __GNUC__
  36. #  define HUGE_VALL    (__extension__ \
  37.              ((__huge_vall_t) { __c: __HUGE_VALL_bytes }).__ld)
  38. # else    /* Not GCC.  */
  39. static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes };
  40. #  define HUGE_VALL    (__huge_vall.__ld)
  41. #  endif /* GCC.  */
  42.  
  43. #endif /* GCC 2.95 */
  44.